Related tdf#124263 Make sure sidebar is wide enough for content

If panel's requested minimal size is smaller than current sidebar width,
enlarge the sidebar to fit the content.

Change-Id: I9baa4ef6c01d5563951d4df0d939883fce02e87b
Reviewed-on: https://gerrit.libreoffice.org/69561
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx
index e4bd01b..f2fa554 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -1216,9 +1216,16 @@
    {
        const sal_uInt16 nId (pSplitWindow->GetItemId(mpParentWindow.get()));
        const sal_uInt16 nSetId (pSplitWindow->GetSet(nId));
        const sal_Int32 nRequestedWidth
            = (TabBar::GetDefaultWidth() + nWidth) * mpTabBar->GetDPIScaleFactor();

        // Make sure the sidebar is wide enough to fit the requested content
        if (pSplitWindow->GetSizePixel().Width() < nRequestedWidth)
            SetChildWindowWidth(nRequestedWidth);

        pSplitWindow->SetItemSizeRange(
            nSetId,
            Range(TabBar::GetDefaultWidth() * mpTabBar->GetDPIScaleFactor() + nWidth,
            Range(nRequestedWidth,
                  getMaximumWidth() * mpTabBar->GetDPIScaleFactor()));
    }
}
diff --git a/test/source/sheet/xviewsplitable.cxx b/test/source/sheet/xviewsplitable.cxx
index 7dd18ae..d88122f5 100644
--- a/test/source/sheet/xviewsplitable.cxx
+++ b/test/source/sheet/xviewsplitable.cxx
@@ -23,12 +23,12 @@
    uno::Reference< sheet::XViewSplitable > xViewSplitable(init(), UNO_QUERY_THROW);
    CPPUNIT_ASSERT_MESSAGE("View is already split", !xViewSplitable->getIsWindowSplit());

    xViewSplitable->splitAtPosition(101, 51);
    xViewSplitable->splitAtPosition(90, 51);

    CPPUNIT_ASSERT_MESSAGE("View wasn't split", xViewSplitable->getIsWindowSplit());

    CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong horizontal pixel position",
                                 sal_Int32(101), xViewSplitable->getSplitHorizontal());
                                 sal_Int32(90), xViewSplitable->getSplitHorizontal());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong vertical pixel position",
                                 sal_Int32(51), xViewSplitable->getSplitVertical());